header

对不起,我是一个前端,一些同学说我是做前台的,对,我之前就是写页面的。之所以要再学Node,一方面是工作需要,有时(纯)后端不配合优化性能问题;另一方面是后端知识能够促进前端发展(大家说),当然页面重构技术除外。

最近又看了一遍《node深入浅出》,希望朴大能再写其他书籍,或者再版。Node的书籍主要包括 node基础知识、connect && middlewar、Express、线上部署等内容,《node实战》也是这个布局(layout)。说一些概念的时候,大家也能说一个大概,以下内容主要以demo为主。

请注意:以下内容包说,不包对

content

Simple server

Node 提供的相对底层的架构,可以轻松的实现一个server。如:

var http = require('http');

var server = http.createServer(function(req, res) {
    var url = 'http://baidu.com';
    var body = '点击<a href="' + url + '" target="_blank">百度</a>';

    // https://baike.baidu.com/item/ContentType/1938445?fr=aladdin
    res.setHeader('content-type', 'text/html;charset=utf-8');

    // http://nodejs.cn/api/buffer.html#buffer_class_method_buffer_bytelength_string_encoding
    res.setHeader('content-length', Buffer.byteLength(body, 'utf-8'));

    res.end(body);
})

// nodemon to watch
server.listen(3000);

content-type 指定返回内容类型,content-length 指定返回字节长度,能够提供传输效率。大家也可以将text/html改成text/plain,也可以将 Buffer.byteLength(body, 'utf-8') 改成 body.length 看下效果,想想为什么不对,书中都有讲。

Connect

它引入中间件概念,并封装了一些常用的中间件,方便大家能够更方便搭建服务。

var http = require('http');

var connect = require('connect'),
    morgan = require('morgan');

var app = connect();

// logger
app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));

// respond to all requests
app.use(function(req, res){
  res.end('Hello from Connect!\n');
});

//create node.js http server and listen on port
http.createServer(app).listen(3000);

morgan 用来记录日志,代码看起来非常清爽。

Express

var express = require('express');
var app = express(),
    user = express();

user.get('/show/:id', function(req, res) {
    res.end('get user detail');
})

user.get('/list', function(req, res) {
    res.end('get user list');
})

app.use('/user', user);

app.listen(3000);

var express = require('express');
var app = express(),
    user = express();

user.get('/user', function(req, res) {
    res.end('user page');
})

// 这里直接写路由应该不常见
app.get('/home', function(req, res) {
    res.end('home page');
})

app.use(user);

app.listen(3000);

footer

以上内容介绍了如何建立server 和 使用中间件来开发功能。 下一章待续....

参考


Arguseye
31 声望2 粉丝

学艺不精